'use strict';

const Controller = require('egg').Controller;

class AddressController extends Controller {

  // 新增
  async create(ctx) {
    const { app } = this;

    // 1获取数据
    const user_id = ctx.state.user.id;
    const { consignee, phone, address } = ctx.request.body;

    // 2验证规则
    ctx.validate({ consignee: app.validate.address.consignee, phone: app.validate.address.phone, address: app.validate.address.address });

    // 3操作数据库
    const res = await ctx.service.mall.pcWeb.address.createAddress({ user_id, consignee, phone, address });
    res ? ctx.helper.success('新增地址成功', res) : ctx.helper.error('新增地址失败', 400);
  }

  // 获取列表
  async index() {
    const { ctx } = this;
    const res = await ctx.service.mall.pcWeb.address.getAddress(ctx.state.user.id);
    res ? ctx.helper.success('获取地址列表成功', res) : ctx.helper.error('获取地址列表失败', 400);
  }

  // 删除
  async destroy() {
    const { ctx } = this;
    const id = ctx.params.id;
    try {
      const res = await ctx.service.mall.pcWeb.address.delAddress(id);
      if (!res) return ctx.helper.error('删除的地址不存在', 404);
      ctx.helper.success('删除地址成功');
    } catch (error) {
      console.error('删除地址失败', error);
      ctx.helper.error('删除地址失败', 400);
    }
  }

  // 修改地址
  async update() {
    console.log('update');
    const { ctx, app } = this;
    // 2验证规则
    ctx.validate({ consignee: app.validate.address.consignee, phone: app.validate.address.phone, address: app.validate.address.address });
    const res = await ctx.service.mall.pcWeb.address.updateAddress(ctx.params.id, ctx.request.body);
    res ? ctx.helper.success('修改地址成功') : ctx.helper.error('操作的地址不存在', 404);

  }

  // 设置默认地址
  async setDefault() {
    const { ctx } = this;
    const id = ctx.params.id;
    const user_id = ctx.state.user.id;
    const res = await ctx.service.mall.pcWeb.address.setDefault(user_id, id);
    res ? ctx.helper.success('设置默认地址成功') : ctx.helper.error('设置默认地址不存在', 404);
  }
}

module.exports = AddressController;
